//
//  TSCMyDatePicker.m
//  Tsc_IOS
//
//  Created by Rio on 15-10-06.
//  Copyright (c) 2015年 idream. All rights reserved.
//

#import "TSCMyDatePicker.h"
#import "TSCSDK.h"

@implementation TSCMyDatePicker

+ (TSCMyDatePicker *) loadFromXib {
    // 加载xib
    TSCMyDatePicker * frag = [[NSBundle mainBundle]loadNibNamed:NSStringFromClass(self) owner:nil options:nil][0];
    
    // 设置默认尺寸
    // 因为UIDatePicker的默认尺寸为{{0, 0}, {320, 216}}，再加上第二行高度为30的按钮，所以最终尺寸为{320, 246}
    frag.frame = CGRectMake(0, 0, 320, 246);
    
    // 设置默认日期（时间）为当前日期（时间）
    //    [frag.datePicker setTimeZone:[NSTimeZone systemTimeZone]];
    [frag.datePicker setDate:[NSDate date]];
    
    // 注册事件——3个按钮
    [frag.btnConfirm addTarget:self action:@selector(btnConfirmClicked:) forControlEvents:UIControlEventTouchUpInside];
    [frag.btnCancel addTarget:self action:@selector(btnCancelClicked:) forControlEvents:UIControlEventTouchUpInside];
    [frag.btnNoSelect addTarget:self action:@selector(btnNoSelectClicked:) forControlEvents:UIControlEventTouchUpInside];
    
    return frag;
}

+ (void) btnConfirmClicked:(UIButton * )btn {
    NSAssert([btn.superview isKindOfClass:[self class]], @"[E]%s: 当MyDatePicker的确定按钮点击时，发现按钮的父view不是MyDatePicker！", __FUNCTION__);
    
    TSCMyDatePicker * frag = (TSCMyDatePicker *) btn.superview;
    
    // 更新选中的日期
    frag.selectedDate = frag.datePicker.date;
    
    // 执行回调
    if (frag.btnClickedListenerConfirm) {
        frag.btnClickedListenerConfirm(btn, frag.datePicker.date);
    }
}
+ (void) btnCancelClicked:(UIButton * )btn {
    NSAssert([btn.superview isKindOfClass:[self class]], @"[E]%s: 当MyDatePicker的确定按钮点击时，发现按钮的父view不是MyDatePicker！", __FUNCTION__);
    
    TSCMyDatePicker * frag = (TSCMyDatePicker *) btn.superview;
    
    // 更新选中的日期
    // do nothing
    
    // 执行回调
    if (frag.btnClickedListenerCancel) {
        frag.btnClickedListenerCancel(btn, frag.datePicker.date);
    }
}
+ (void) btnNoSelectClicked:(UIButton * )btn {
    NSAssert([btn.superview isKindOfClass:[self class]], @"[E]%s: 当MyDatePicker的确定按钮点击时，发现按钮的父view不是MyDatePicker！", __FUNCTION__);
    
    TSCMyDatePicker * frag = (TSCMyDatePicker *) btn.superview;
    
    // 更新选中的日期
    frag.selectedDate = nil; // 用nil表示什么都不选择
    
    // 执行回调
    if (frag.btnClickedListenerNoSelect) {
        frag.btnClickedListenerNoSelect(btn, frag.datePicker.date);
    }
}

#pragma mark Getters & Setters
- (void) setDatePickerMode:(UIDatePickerMode)datePickerMode {
    _datePicker.datePickerMode = datePickerMode;
}
- (void) setInitialDate:(NSDate *)initialDate {
    [_datePicker setDate:initialDate animated:NO];
}
- (void) setMinimumDate:(NSDate *)minimumDate {
    _datePicker.minimumDate = minimumDate;
}
- (void) setMaximumDate:(NSDate *)maximumDate {
    _datePicker.maximumDate = maximumDate;
}
- (NSDate *) selectedDate {
    // 如果曾点击“确定”按钮，则以点击按钮时datePicker上的日期为准
    // 如果曾点击“取消”按钮，什么都不做，选择的日期原来是什么就是什么（有可能为nil，也有可能时datePicker上的日期）
    // 如果曾点击“不选”按钮，则返回nil，表示什么都没有选择
    // 注：以上3中清空，在3个按钮各自的事件监听方法中，已经设置过selectedDate的值，这里只需要直接返回即可
    //    return _datePicker.date;
    return _selectedDate;
}

#pragma mark 私有方法
- (NSDateFormatter *) dfyyyyMMdd {
    NSDateFormatter * df = [[NSDateFormatter alloc]init];
    df.dateFormat = @"yyyyMMdd";
    return df;
}

@end
